(deftemplate intrebare
    (slot stringIntrebare)
    (slot raspuns)
    )
(deftemplate credit
    (slot nume)
    )
(assert (intrebare (stringIntrebare nil)(raspuns nil)))
(assert (credit (nume nil)))

(defrule r1
    (declare (salience 5))
	(intrebare (stringIntrebare nil)(raspuns nil))
	=>
	(printout t "Ati facut cerere de credit? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ati facut cerere de credit?")(raspuns ?r)))
)
(defrule r2
	(declare (salience 30))
	(intrebare (stringIntrebare "Ati facut cerere de credit?")(raspuns NU))
	=>
	(printout t "Completati o cerere de credit." crlf)
)
(defrule r3
    (declare (salience 50))
	(intrebare (stringIntrebare "Ati facut cerere de credit?")(raspuns DA))
	=>
	(printout t "Aveti copie dupa BI? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti copie dupa BI?")(raspuns ?r)))
)
(defrule r4
	(declare (salience 70))
	(intrebare (stringIntrebare "Aveti copie dupa BI?")(raspuns NU))
	=>
	(printout t "Faceti o copie dupa BI!" crlf)
)
(defrule r5
    (declare (salience 110))
	(intrebare (stringIntrebare "Aveti copie dupa BI?")(raspuns DA))
	=>
	(printout t "Aveti adeverinta de venit? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti adeverinta de venit?")(raspuns ?r)))
)
(defrule r6
	(declare (salience 90))
	(intrebare (stringIntrebare "Aveti adeverinta de venit?")(raspuns NU))
	=>
	(printout t "Nu aveti toate actele necesare acordarii creditului bancar." crlf)
)
(defrule r7
    (declare (salience 120))
	(intrebare (stringIntrebare "Aveti adeverinta de venit?")(raspuns DA))
	=>
	(printout t "Doriti un credit de studii ? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Doriti un credit de studii?")(raspuns ?r)))
)
(defrule r8
    (declare (salience 13))
	(intrebare (stringIntrebare "Doriti un credit de studii?")(raspuns NU))
	=>
	(printout t "Aveti fisa fiscala? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti fisa fiscala?")(raspuns ?r)))
)
(defrule r9
    (declare (salience 140))
	(intrebare (stringIntrebare "Doriti un credit de studii?")(raspuns DA))
	=>
	(printout t "Aveti diploma de licenta? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti diploma de licenta?")(raspuns ?r)))
)
(defrule r10
    (declare (salience 150))
	(intrebare (stringIntrebare "Aveti diploma de licenta?")(raspuns NU))
	=>
	(printout t "Nu aveti toate actele necesare." crlf)
)
(defrule r11
    (declare (salience 160))
	(intrebare (stringIntrebare "Aveti diploma de licenta?")(raspuns DA))
	=>
	(printout t "Aveti acte doveditoare pt bursa? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti acte doveditoare pt bursa?")(raspuns ?r)))
)
(defrule r12
    (declare (salience 170))
	(intrebare (stringIntrebare "Aveti acte doveditoare pt bursa?")(raspuns NU))
	=>
	(printout t "Nu aveti toate actele necesare." crlf)
)
(defrule r13
    (declare (salience 180))
	(intrebare (stringIntrebare "Aveti acte doveditoare pt bursa?")(raspuns DA))
	=>
	(printout t "Aveti acceptul institutiei de invatamant? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti acceptul institutiei de invatamant?")(raspuns ?r)))
)
(defrule r14
	(declare (salience 190))
    (intrebare (stringIntrebare "Aveti acceptul institutiei de invatamant?")(raspuns NU))
	=>
	(printout t "Nu aveti toate actele necesare." crlf)
)
(defrule r15
    (declare (salience -5))
	(intrebare (stringIntrebare "Aveti acceptul institutiei de invatamant?")(raspuns DA))
	=>
	(assert (credit (nume creditDeStudii)))
    (printout t "Creditul pentru studii a fost aprobat." crlf)
)
(defrule r16
    (declare (salience -15))
	(intrebare (stringIntrebare "Aveti fisa fiscala?")(raspuns DA))
	=>
	(printout t "Aveti factura de utilitati? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti factura de utilitati?")(raspuns ?r)))
)
(defrule r17
    (declare (salience -25))
    (intrebare (stringIntrebare "Aveti factura de utilitati?")(raspuns NU))
    =>
    (assert (credit (nume creditInMagazin)))
    (printout t "Vi s-a acordat creditul in magazin." crlf)
)
(defrule r18
    (declare (salience -30))
    (intrebare (stringIntrebare "Aveti factura de utilitati?")(raspuns DA))
    =>
    (printout t "Aveti extras de carte funciara? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti extras de carte funciara?")(raspuns ?r)))
)
(defrule r19
    (declare (salience -40))
    (intrebare (stringIntrebare "Aveti extras de carte funciara?")(raspuns DA))
    =>
    (printout t "Aveti documente necesare constituirii ipotecii? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Aveti documente necesare constituirii ipotecii?")(raspuns ?r)))
)
(defrule r20
    (declare (salience -50))
    (intrebare (stringIntrebare "Aveti documente necesare constituirii ipotecii?")(raspuns NU))
    =>
        (printout t "Nu aveti toate actele necesare." crlf)
)
(defrule r21
    (declare (salience -60))
    (intrebare (stringIntrebare "Aveti documente necesare constituirii ipotecii?")(raspuns DA))
    =>
    (assert (credit (nume creditIpotecar)))
    (printout t "Vi s-a acordat creditul ipotecar." crlf)
)

(facts)
(agenda)
(run)